package com.yh.jandan.util ;

import java.security.MessageDigest;
import java.util.Date;

public class MD5Util {

	public final static String MD5 ( String str , int times ) {
		String md5str = str ;
		while ( times-- > 0 ) {
			md5str = MD5 ( md5str ) ;
		}
		return md5str ;
	}

	public final static String MD5 ( String s ) {
		char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' } ;
		try {
			byte[] btInput = s.getBytes ( ) ;
			// 获得MD5摘要算法的 MessageDigest 对象
			MessageDigest mdInst = MessageDigest.getInstance ( "MD5" ) ;
			// 使用指定的字节更新摘要
			mdInst.update ( btInput ) ;
			// 获得密文
			byte[] md = mdInst.digest ( ) ;
			// 把密文转换成十六进制的字符串形式
			int j = md.length ;
			char str[] = new char[j * 2] ;
			int k = 0 ;
			for ( int i = 0 ; i < j ; i++ ) {
				byte byte0 = md[i] ;
				str[k++] = hexDigits[byte0 >>> 4 & 0xf] ;
				str[k++] = hexDigits[byte0 & 0xf] ;
			}
			return new String ( str ) ;
		} catch ( Exception e ) {
			e.printStackTrace ( ) ;
			return "" ;
		}
	}

	public static void main ( String[] args ) {
		System.out.println ( MD5 ( "" + new Date ( ).getTime ( ) ) ) ;
		System.out.println ( MD5 ( new Date ( ).getTime ( ) + "" , 3 ).substring ( 0 , 25 ) ) ;
	}
}
